Objects
OOP(Object-Oriented Programming)
类(class)
定义了某种类型的多个对象该如何表现 ### 对象(object) 类的一个实例,决定该类的类型 ### 方法(method) 在对象上调用的函数,使用点(.)调用 注意 方法不同于函数在于方法特定于对应对象 ### 蕴含理念 将复杂的大型程序组织成小的模块化组件 - 使用数据抽象 - 捆绑多个信息与相关行为 使用分散状态的计算 - 每个对象有自己的本地状态 - 每个对象也知道如何管理自己的本地状态 - 使用方法与对象交互 - 几个对象可能属于一个共同类的实例 - 不同的类可以相互关联
例:Lists
内置的list函数其实是一个类 在可迭代对象上调用list可以创建一个list类的新实例 list类定义了有关list的各种用法: - 方法:append, extend, insert ,etc. - 加法与乘法运算 - 元素查找与赋值
1 | print(list) |
<class 'list'>
<class 'list'>
Class Statement
一个类描述了其实例的行为 例如,我们定义一个银行账户类,实现的功能如下:
1 | class Account: # 一个类以class开头,并给他命名 |
Creating Instances
Object Construction
当一个类被调用时: - 创建一个该类的新的实例 -
__init__方法被调用,其中以新对象作为其中的第一个元素,
一般命名为self, 并带有在调用表达式中的任何额外参数
1 | a = Account('Alan') |
Alan
0
Instance Attributes
对象的属性可以通过点号表达式(.)来访问与更改 若属性之前不存在, 也可以为其赋值, 可以在任何时候增加新的属性
1 | a.balance = 12 # 已存在的属性可以被更改 |
20
Object Identity
每个用户定义类的对象都有一个唯一的标识
标识运算符is与is not可以判断两个表达式是否是相同的对象
使用赋值将一个对象绑定到一个新名称时不会创建一个新对象
1 | print(a is a) |
True
True
True
Methods
Invoking Methods
调用方法意味着用点表达式定义类中定义的一个方法 所有调用方法都通过self变量访问对象,所以他们可以访问与操作对象的属性 如deposit方法中定义了两个参数, 但点表达式会自动为方法提供第一个参数
1 | tom = Account('Tom') |
100